package cn.wolfcode.wolf2w.business.listener;

import cn.wolfcode.wolf2w.business.api.domain.StrategyCanal;
import com.alibaba.fastjson.JSON;
import org.hibernate.sql.Insert;
import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import top.javatool.canal.client.annotation.CanalTable;
import top.javatool.canal.client.handler.EntryHandler;


@Component
@CanalTable("ta_strategy")

public class StrstegyListener implements EntryHandler<StrategyCanal> {


    @Autowired
    private AmqpTemplate amqpTemplate;
    @Override
    public void insert(StrategyCanal strategyCanal) {
        System.out.println("新增数据:"+strategyCanal);
        ///将 Java 对象转换为跨服务传输的通用格式（JSON），便于通过消息队列传递。
        String jsonString = JSON.toJSONString(strategyCanal);
        /**
         * 通过 Spring AMQP 提供的amqpTemplate工具类，向 RabbitMQ 发送消息：
         * 第一个参数"strategyExchange"：消息交换机名称（RabbitMQ 中需提前创建该交换机，用于消息路由）；
         * 第二个参数"strategy.insert"：消息路由键（用于交换机将消息路由到绑定的队列）；
         * 第三个参数jsonString：实际发送的消息内容（即前面序列化的策略数据 JSON）。
         */
        amqpTemplate.convertAndSend("strategyExchange", "strategy.insert", jsonString);
    }

    @Override
    public void update(StrategyCanal before, StrategyCanal after) {

        System.out.println("更新数据:"+before);
        System.out.println("更新数据:"+after);
    }

    @Override
    public void delete(StrategyCanal strategyCanal) {
        System.out.println("删除数据:"+strategyCanal);
    }
}
